package com.acp.controller;

import com.acp.model.DcsTypeNum;
import com.acp.result.PageResult;
import com.acp.result.ResultInfo;
import com.acp.service.ObjectInfoService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.annotation.Resource;
import java.util.List;

/**
 * All rights Reserved, Designed By 姑苏区政府大数据中心
 *
 * @version V1.0
 * @Title: null.java
 * @Package com.dci.controller.construction
 * @Description: 采集的数据查询管理
 * @author: 张星亮
 * @date: 2019/4/5
 * @Copyright: 2019 姑苏区政府大数据中心. All rights reserved.
 * 注意：本内容仅限于姑苏区政府大数据中心内部传阅，禁止外泄以及用于其他的商业目
 */

@Controller
@RequestMapping("/object")
public class ObjectInfoController {

    @Resource
    private ObjectInfoService objectInfoService;

    /**
     * 查询某一类型所有保护对象信息
     * @param searchMap
     * @param pageNum
     * @param pageSize
     * @return PageResult 封装的返回参数  保存成功msg:906 保存失败msg:911
     */
    @PostMapping("/getObjectNameLst/{pageNum}/{pageSize}")
    @ResponseBody
    public PageResult getObjectNameLst(@RequestBody(required = false) String searchMap, @PathVariable("pageNum") Integer pageNum, @PathVariable("pageSize") Integer pageSize) {
        PageResult pageResult = objectInfoService.getObjectNameLst(searchMap, pageNum, pageSize);
        return pageResult;
    }

    /**
     * 查询某一类型所有保护对象信息
     *
     * @param searchMap
     * @return ResultInfo 封装的返回参数  保存成功msg:906 保存失败msg:911
     */
    @PostMapping("/saveObject")
    @ResponseBody
    public ResultInfo saveObject(@RequestBody(required = false) String searchMap) {
        ResultInfo resultInfo = objectInfoService.addObjectInfo(searchMap);
        return resultInfo;
    }

    /***
     * 导出全部数据查询
     *
     * @param searchMap
     * @return PageResult 封装的返回参数  保存成功msg:906 保存失败msg:911
     */
    @PostMapping("/findAllList")
    @ResponseBody
    public PageResult findAllList(@RequestBody(required = false) String searchMap) {
        PageResult resultInfo = objectInfoService.findAllList(searchMap);
        return resultInfo;
    }

    /**
     * 更新保护对象信息
     *
     * @param searchMap
     * @return ResultInfo 封装的返回参数  保存成功msg:906 保存失败msg:911
     */
    @PostMapping("/updateObject")
    @ResponseBody
    public ResultInfo updateObject(@RequestBody(required = false) String searchMap) {
        ResultInfo resultInfo = objectInfoService.updateObjectInfo(searchMap);
        return resultInfo;
    }

    /***
     * 审核
     * @param searchMap
     * @return ResultInfo 封装的返回参数  保存成功msg:906 保存失败msg:911
     */
    @PostMapping("/reviewObject")
    @ResponseBody
    public ResultInfo reviewObject(@RequestBody(required = false) String searchMap) {
        ResultInfo resultInfo = objectInfoService.reviewObject(searchMap);
        return resultInfo;
    }

    /***
     * 删除
     * @param searchMap
     * @return ResultInfo 封装的返回参数  保存成功msg:906 保存失败msg:911
     */
    @PostMapping("/delObjectLst")
    @ResponseBody
    public ResultInfo delObjectLst(@RequestBody(required = false) String searchMap) {
        ResultInfo resultInfo = objectInfoService.delObjectLst(searchMap);
        return resultInfo;
    }

    /***
     * 条件查询
     * @param searchMap
     * @return PageResult 封装的返回参数  保存成功msg:906 保存失败msg:911
     */
    @PostMapping("/findList")
    @ResponseBody
    public PageResult findList(@RequestBody(required = false) String searchMap) {
        PageResult pageResult = objectInfoService.findList(searchMap);
        return pageResult;
    }

    /***
     * 查询街道社区
     * @param searchMap
     * @return PageResult 封装的返回参数  保存成功msg:906 保存失败msg:911
     */
    @PostMapping("/queryByStreet")
    @ResponseBody
    public PageResult queryByStreet(@RequestBody(required = false) String searchMap) {
        PageResult pageResult = objectInfoService.queryByStreet(searchMap);
        return pageResult;
    }

    /***
     * 上传Excel文件
     * @param file
     * @param type
     * @return ResultInfo 封装的返回参数  保存成功msg:906 保存失败msg:911
     */
    @PostMapping("/uploadAndSave")
    @ResponseBody
    public ResultInfo uploadAndSave(@RequestParam("uploadFile") MultipartFile file, @RequestParam("type") String type) {
        ResultInfo resultInfo = new ResultInfo();
        try {
            resultInfo = objectInfoService.resolveExcel(file, type);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return resultInfo;
    }

    /***
     * 查询字典值
     * @return PageResult 封装的返回参数  保存成功msg:906 保存失败msg:911
     */
    @PostMapping("/queryDict")
    @ResponseBody
    public PageResult queryDict() {
        PageResult pageResult = objectInfoService.queryDict();
        return pageResult;
    }
    /***
     * 查询字典值
     * @return PageResult 封装的返回参数  保存成功msg:906 保存失败msg:911
     */
    @PostMapping("/selectCountByType")
    @ResponseBody
    public List<DcsTypeNum> selectCountByType() {
        List<DcsTypeNum> list = objectInfoService.selectCountByType();
        return list;
    }
}
